home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 2001 May / SGI Freeware 2001 May - Disc 2.iso / dist / fw_netpbm.idb / usr / freeware / include / shhopt.h.z / shhopt.h
C/C++ Source or Header  |  2001-01-10  |  2KB  |  61 lines

  1. /* $Id: shhopt.h,v 1.5 2000/03/10 08:32:39 sverrehu Exp $ */
  2. #ifndef SHHOPT_H
  3. #define SHHOPT_H
  4.  
  5. #ifdef __cplusplus
  6. extern "C" {
  7. #endif
  8.  
  9. /* constants for recognized option types. */
  10. typedef enum {
  11.     OPT_END,               /* nothing. used as ending element. */
  12.     OPT_FLAG,              /* no argument following. sets variable to 1. */
  13.     OPT_STRING,            /* string argument. */
  14.     OPT_INT,               /* signed integer argument. */
  15.     OPT_UINT,              /* unsigned integer argument. */
  16.     OPT_LONG,              /* signed long integer argument. */
  17.     OPT_ULONG,             /* unsigned long integer argument. */
  18.     OPT_FLOAT              /* floating point argument. */
  19. } optArgType;
  20.  
  21. /* flags modifying the default way options are handeled. */
  22. #define OPT_CALLFUNC  1    /* pass argument to a function. */
  23.  
  24.     typedef struct {
  25.     char       shortName;  /* short option name. */
  26.     const char *longName;  /* long option name, not including '--'. */
  27.     optArgType type;       /* option type. */
  28.     void       *arg;       /* pointer to variable to fill with argument,
  29.                             * or pointer to function if type == OPT_FUNC. */
  30.     int        flags;      /* modifier flags. */
  31. } optStruct;
  32.     
  33.  
  34. typedef struct {
  35.     unsigned char short_allowed;  /* boolean */
  36.         /* The syntax may include short (i.e. one-character) options.
  37.            These options may be stacked within a single token (e.g.
  38.            -abc = -a -b -c).  If this value is not true, the short option
  39.            member of the option table entry is meaningless and long 
  40.            options may have either one or two dashes.
  41.            */
  42.     unsigned char allowNegNum;  /* boolean */
  43.         /* Anything that starts with - and then a digit is a numeric
  44.            parameter, not an option 
  45.            */
  46.     optStruct *opt_table;
  47. } optStruct2;
  48.         
  49. void optSetFatalFunc(void (*f)(const char *, ...));
  50. void optParseOptions(int *argc, char *argv[],
  51.              optStruct opt[], int allowNegNum);
  52. void
  53. optParseOptions2(int * const argc_p, char *argv[], const optStruct2 opt, 
  54.                  const unsigned long flags);
  55.  
  56. #ifdef __cplusplus
  57. }
  58. #endif
  59.  
  60. #endif
  61.